import React from 'react'; import { IUser, IUserHasId } from '@growi/core'; import { NextPage, GetServerSideProps, GetServerSidePropsContext, } from 'next'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; import dynamic from 'next/dynamic'; import { ShareLinkLayout } from '~/components/Layout/ShareLinkLayout'; import GrowiContextualSubNavigation from '~/components/Navbar/GrowiContextualSubNavigation'; import { Page } from '~/components/Page'; import { CrowiRequest } from '~/interfaces/crowi-request'; import { RendererConfig } from '~/interfaces/services/renderer'; import { IShareLinkHasId } from '~/interfaces/share-link'; import { useCurrentUser, useCurrentPagePath, useCurrentPathname, useCurrentPageId, useRendererConfig, useShareLinkId, useIsSearchServiceConfigured, useIsSearchServiceReachable, useIsSearchScopeChildrenAsDefault, } from '~/stores/context'; import { CommonProps, getServerSideCommonProps, useCustomTitle, getNextI18NextConfig, } from '../utils/commons'; const ShareLinkAlert = dynamic(() => import('~/components/Page/ShareLinkAlert'), { ssr: false }); const ForbiddenPage = dynamic(() => import('~/components/ForbiddenPage'), { ssr: false }); type Props = CommonProps & { shareLink?: IShareLinkHasId, isExpired: boolean, currentUser: IUser, disableLinkSharing: boolean, isSearchServiceConfigured: boolean, isSearchServiceReachable: boolean, isSearchScopeChildrenAsDefault: boolean, rendererConfig: RendererConfig, }; const SharedPage: NextPage = (props: Props) => { useShareLinkId(props.shareLink?._id); useCurrentPageId(props.shareLink?.relatedPage._id); useCurrentPagePath(props.shareLink?.relatedPage.path); useCurrentUser(props.currentUser); useCurrentPathname(props.currentPathname); useRendererConfig(props.rendererConfig); useIsSearchServiceConfigured(props.isSearchServiceConfigured); useIsSearchServiceReachable(props.isSearchServiceReachable); useIsSearchScopeChildrenAsDefault(props.isSearchScopeChildrenAsDefault); const isNotFound = props.shareLink == null || props.shareLink.relatedPage == null || props.shareLink.relatedPage.isEmpty; const isShowSharedPage = !props.disableLinkSharing && !isNotFound && !props.isExpired; return (
{isShowSharedPage && }
{ props.disableLinkSharing && (
)} { (isNotFound && !props.disableLinkSharing) && (